package com.uujava.minibox.actionstyle;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
 * @category Java Swing系统托盘的使用
 * @author k:2012-10-16
 *
 */
public class BoxTray {
	TrayIcon trayIcon; // 托盘图标
	SystemTray tray; // 本操作系统托盘的实例
	//JFrame frame;//需要控制的窗体
	/**
	 * 功能：系统托盘————k:2012-10-16
	 * @param frame 需要添加托盘的窗体
	 * @param icon	托盘显示的图标
	 */
	public BoxTray(final JFrame frame,ImageIcon icon) {
//		this.frame=frame;
		tray = SystemTray.getSystemTray(); // 获得本操作系统托盘的实例
		// 将要显示到托盘中的图标

		PopupMenu pop = new PopupMenu(); // 构造一个右键弹出式菜单
		final MenuItem show = new MenuItem("打开程序");
		final MenuItem exit = new MenuItem("推出程序");
		pop.add(show);
		pop.add(exit);
		trayIcon = new TrayIcon(icon.getImage(), "MiniBox", pop);// 实例化托盘图标
		trayIcon.setImageAutoSize(true);
		// 为托盘图标监听点击事件
		trayIcon.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if (e.getClickCount() == 2)// 鼠标双击图标
				{
//					 trayIcon.displayMessage("警告", "这是一个警告提示!",
//					 TrayIcon.MessageType.WARNING);
//					 trayIcon.displayMessage("错误", "这是一个错误提示!",
//					 TrayIcon.MessageType.ERROR);
//					 trayIcon.displayMessage("信息", "这是一个信息提示!",
//					 TrayIcon.MessageType.INFO);
//					 tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标
					frame.setExtendedState(JFrame.NORMAL);// 设置状态为正常
					frame.setVisible(true);// 显示主窗体
				}
			}
		});

	
		// 选项注册事件
		ActionListener al2 = new ActionListener() {
                    @Override
			public void actionPerformed(ActionEvent e) {
				// 退出程序
				if (e.getSource() == exit) {
					System.exit(0);// 退出程序
				}
				// 打开程序
				if (e.getSource() == show) {
					frame.setExtendedState(JFrame.NORMAL);// 设置状态为正常
					frame.setVisible(true);
				}
			}
		};
		exit.addActionListener(al2);
		show.addActionListener(al2);

		try {
			tray.add(trayIcon); // 将托盘图标添加到系统的托盘实例中
		} catch (AWTException ex) {
			ex.printStackTrace();
		}

		// 为主窗体注册窗体事件
		frame.addWindowListener(new WindowAdapter() {
			// 窗体最小化事件
                    @Override
			public void windowIconified(WindowEvent e) {
				frame.setVisible(false);// 使窗口不可视
				frame.dispose();// 释放当前窗体资源
			}
		});
	}
	//设置托盘图标
	public void setIcon(ImageIcon img){
		trayIcon.setImage(img.getImage());
	}
	final void print(String str){
		System.out.println(str);
	}
	public static void main(String[] args) {
		JFrame jf=new JFrame("hello");
		jf.setSize(300,400);
		jf.setVisible(true);
		BoxTray t=new BoxTray(jf,new ImageIcon("1.jpg"));
		//t.setIcon(new ImageIcon("1.jpg"));
	}
}